package jdesktop.appbar.win32;

import jdesktop.appbar.AppBarModel;

/**
 * Notification from the shell about changes to the appbar.
 */
public interface AppBarEventHandler
{
    /**
     * Notification that the app bar's size/potiion has changed. This may happen
     * as other app bars are moved, added, etc...
     * @param owner
     */
    void appBarPositionChanged(AppBarModel owner);

    void appBarStateChange(AppBarModel owner);

    /**
     * Notification that tha full screen app is opening or closing.
     * @param owner
     * @param opening   <code>true</code> if an app is about to become full screen.
     *  <code>false</code> otherwise.
     *
     * Appbars that are always on top should lower their z-order when a full screen app
     * is opened, and reset the z-order to it's prior location when a full screen app is closed.
     */
    void appBarFullScreenApp(AppBarModel owner, boolean opening);

    /**
     * Notification that the user has selected Cascade, or Tile windows.
     * @param owner The appbar being notified.
     * @param begin <code>true</code> when the operation is starting - no windows have moved
     * yet. <code>false</code> when the operation has completed.
     */
    void appBarWindowArrange(AppBarModel owner, boolean begin);


}
